package 二叉树;

/**
 * TODO
 *
 * @Description
 * @Author Lx
 * @Date 2024/7/2 14:16
 **/
public class 由前中序构建二叉树 {

    static TreeNode root=null;

    static public void solve(int[] inorder,int[] postorder,int leftlen,int rightlen,TreeNode parent){
        if(leftlen==0||rightlen==0){
            return;
        }
        int rootval=postorder[0];
        TreeNode root=new TreeNode(rootval);
        parent.left=root;
        solve(inorder,postorder,leftlen,rightlen,root);
        solve(inorder,postorder,leftlen,rightlen,root);
    }

    static public TreeNode buildTree(int[] inorder, int[] postorder) {
        //思路都是找根节点，不断找根节点，确定左右子树的长度，然后递归
        int leftlen=0;
        int rightlen=0;
        int rootval=postorder[0];

        for (int i = 0; i < inorder.length; i++) {
            if(inorder[i]==rootval){//找到root,确定leftlen
                leftlen=i;
            }
        }
        //确定rightlen
        rightlen=inorder.length-leftlen-1;

        //确定root
        TreeNode root=new TreeNode(rootval);
        solve(inorder,postorder,leftlen,rightlen,root);


        return null;
    }

    public static void main(String[] args) {
    }
}
